# -*- coding:utf-8 -*-

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer , Text

# engine = create_engine("mysql+pymysql://root:@127.0.0.1/lj", encoding="utf-8", echo=True, max_overflow=5)
# 初始化数据库连接，使用pymysql模块
engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}"
                       .format('root',
                               # '',
                               # '127.0.0.1',
                               'amazonreviewstest',
                               '172.17.0.2:3306',
                               'lj',
                               'utf8')
                      )

# 连接mysql数据库，echo为是否打印结果
Base = declarative_base()  # 生成orm基类
class amazon(Base):  # 继承生成的orm基类
    __tablename__ = "amazon_reviews"  # 表名
    review_id = Column(String(255), primary_key=True)  # 设置主键
    profile_name = Column(String(255))
    review_date = Column(String(255))
    review_body = Column(Text)
    page = Column(Integer)
    asin = Column(String(20))


# 创建与数据库的会话
Session_class = sessionmaker(bind=engine)
# 生成session实例
session = Session_class()

#
# #插入单条数据
# new_student = amazon(review_id='asdas',profile_name='F',review_date='asd', review_body='dsad', page=1, asin="a")
# #只添加，还没有提交，如果出错还可以撤回(rollback)
# session.add(new_student)
# #提交到数据库
# session.commit()

#
# # 第二种批量插入方法，for循环方法,其实就是获得一个列表，列表里都是字典。
# lis = []
# for i in range(3):
#     lis.append({'review_id': "刘备%s" % i, 'profile_name': '23', 'review_date': 'review_date', 'review_body': 'review_body', 'page': 1, 'asin': 'asin'})
# session.execute(amazon.__table__.insert(), lis)
# session.commit()

Base.metadata.create_all(engine)  # 创建表结构
# 父类Base调用所有继承他的子类来创建表结构